package com.ruoyi.user.service.impl;

import java.util.List;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.dept.domain.Dept;
import com.ruoyi.dept.mapper.DeptMapper;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.user.mapper.UserMapper;
import com.ruoyi.user.domain.User;
import com.ruoyi.user.service.IUserService;

/**
 * 用户信息Service业务层处理
 * 
 * @author 张富饶
 * @date 2025-05-18
 */
@Service
public class UserServiceImpl implements IUserService 
{
    @Autowired
    private UserMapper userMapper;
    @Autowired
    private DeptMapper deptMapper;

    /**
     * 查询用户信息
     * 
     * @param userId 用户信息主键
     * @return 用户信息
     */
    @Override
    public User selectUserByUserId(Long userId)
    {
        User user = userMapper.selectUserByUserId(userId);
//        System.err.println(user);
//        Long userId1 = user.getUserId();
//        System.out.println(userId1);
//        Dept dept = deptMapper.selectDeptByDeptId(userId);
//        System.err.println(dept);
        Dept dept = user.getDept();
        System.out.println(dept);
        user.setDept(dept);
//        System.err .println(user);
//        Dept dept = user.getDept();
//        Long deptId = dept.getDeptId();
//        System.err.println(deptId);
//        Dept dept1 = deptMapper.selectDeptByDeptId(deptId);
//        System.out.println(dept1);
//        user.setDept(dept1);
        return user;
    }

    /**
     * 查询用户信息列表
     * 
     * @param user 用户信息
     * @return 用户信息
     */
    @Override
    public List<User> selectUserList(User user)
    {
        return userMapper.selectUserList(user);
    }

    /**
     * 新增用户信息
     * 
     * @param user 用户信息
     * @return 结果
     */
    @Override
    public int insertUser(User user)
    {
//        user.setCreateTime(DateUtils.getNowDate());
        int i = userMapper.insertUser(user);
        System.err.println(i);
        return i;
//

        // 检查用户对象是否为空
//        if (user == null) {
//            throw new IllegalArgumentException("用户信息不能为空");
//        }
//
//        // 检查部门ID是否有效
//        Dept dept1 = user.getDept();
//        Long deptId = dept1.getDeptId();
//        Long deptId = user.getDeptId();
//        Integer deptId = user.getDeptId();
//        if (deptId == null) {
//            throw new IllegalArgumentException("部门ID不能为空");
//        }
//
//        // 查询部门并检查空值
//        Dept dept = deptMapper.selectDeptByDeptId(deptId);
//        if (dept == null) {
//            throw new RuntimeException("部门不存在，ID: " + deptId);
//        }
//
//        // 设置部门名称（如果需要）
//        user.setDept(dept);
//
//        // 保存用户
//        return  userMapper.insertUser(user);
//        ------
//        List<User> users = userMapper.selectUserList(user);
//        u
//        ---
//        // 1. 先插入部门
//        Dept dept = user.getDept();
//        int deptRows = deptMapper.insertDept(dept);
//        if (deptRows <= 0) {
//            throw new RuntimeException("部门创建失败");
//        }
//
//        // 2. 获取自增的部门ID（MyBatis自动回填到dept对象）
//        Long deptId = dept.getDeptId();
//        user.setDeptId(deptId);  // 关联用户与部门
//
//        // 3. 再插入用户
//        int userRows = userMapper.insertUser(user);
//        if (userRows <= 0) {
//            throw new RuntimeException("用户创建失败");
//        }
//        System.err.println(userRows);
//        return userRows;
    }

    /**
     * 修改用户信息
     * 
     * @param user 用户信息
     * @return 结果
     */
    @Override
    public int updateUser(User user)
    {
        user.setUpdateTime(DateUtils.getNowDate());
        Dept dept = user.getDept();
        deptMapper.updateDept(dept);
        return userMapper.updateUser(user);
    }

    /**
     * 批量删除用户信息
     * 
     * @param userIds 需要删除的用户信息主键
     * @return 结果
     */
    @Override
    public int deleteUserByUserIds(Long[] userIds)
    {
        int i = userMapper.deleteUserByUserIds(userIds);
        System.err.println(i);
        return i;
    }

    /**
     * 删除用户信息信息
     * 
     * @param userId 用户信息主键
     * @return 结果
     */
    @Override
    public int deleteUserByUserId(Long userId)
    {
        return userMapper.deleteUserByUserId(userId);
    }
}
